import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.HashSet;
import java.util.Vector;

import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JList;
import javax.swing.ScrollPaneConstants;

public class VueConsultAuteur extends Vue {
	
	private JList list;	
	private JPanel contentPane;
	private JTextArea textAreaOuv;
	private JTextArea textAreaArt;
	
	private HashSet<Ouvrage> listO;
	private HashSet<Article> listA;
	private Vector<String> auteur;
	private JScrollPane scrollPane;
	private JScrollPane scrollPane_1;
	/**
	 * Create the frame.
	 */
	public VueConsultAuteur(Controleur controleur, HashSet<Auteur> at) {
		super(controleur);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 499);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		JLabel lblEntrezUnAuteur = new JLabel("Choisissez un auteur :");
		lblEntrezUnAuteur.setBounds(10, 31, 106, 14);
		
		JScrollPane scrollPane_2 = new JScrollPane();
		scrollPane_2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane_2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPane_2.setBounds(145, 31, 218, 90);
		contentPane.add(scrollPane_2);
		
		if (at.isEmpty()) {
			Message dialog = new Message("Aucun auteur n'est enregistré pour l'instant.");
			dialog.setVisible(true);
		} else {
			auteur = new Vector<String>(); 
			for(Auteur aut: at){
				auteur.add(aut.getNom() + "   " +  aut.getPrenom());
			}
		}
		
		list = new JList(auteur);
		scrollPane_2.setViewportView(list);		
		
		contentPane.setLayout(null);
		contentPane.add(lblEntrezUnAuteur);
		
		scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(145, 224, 218, 66);
		contentPane.add(scrollPane_1);
		

		
		scrollPane = new JScrollPane();
		scrollPane.setBounds(145, 324, 218, 66);
		contentPane.add(scrollPane);
		

		
		JLabel lblOuvrages = new JLabel("Ouvrages :");
		lblOuvrages.setBounds(62, 230, 54, 14);
		contentPane.add(lblOuvrages);
		
		JLabel lblArticles = new JLabel("Articles :");
		lblArticles.setBounds(70, 330, 46, 14);
		contentPane.add(lblArticles);
		
		JButton buttonRechercher = new JButton("Rechercher");
		buttonRechercher.setBounds(274, 147, 89, 23);
		buttonRechercher.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String selectAuteur;
				Object val;
				val=list.getSelectedValue();
				if (val != null) {
					selectAuteur = val.toString();
					listO=getControleur().RechercheParAuteurOuv(selectAuteur);
					listA=getControleur().RechercheParAuteurArt(selectAuteur);
					
					textAreaOuv = new JTextArea();
					scrollPane_1.setViewportView(textAreaOuv);
					textAreaArt = new JTextArea();
					scrollPane.setViewportView(textAreaArt);
					//Ouvrages
					if(listO.isEmpty()){
						Message dialog = new Message("Il n'existe pas d'ouvrage de cet auteur");
						dialog.setVisible(true);
					}
					else{
						for(Ouvrage ouv:listO){
							textAreaOuv.append("Isbn :" + String.valueOf(ouv.getIdentifiant()) + " Titre : " + String.valueOf(ouv.getTitre()) + "\n");
						}
					}
					if(listA.isEmpty()){
						Message dialog = new Message("Il n'existe pas d'article de cet auteur");
						dialog.setVisible(true);
					}
					else{
						for(Article art:listA){
							textAreaArt.append("Issn :" + String.valueOf(art.getParution().getPeriodique().getIssn())+" Num parution :" + String.valueOf(art.getParution().getNumPar())  + " titre : " + String.valueOf(art.getTitre()) + "\n");
						}
					}
				}
				else {
							Message dialErr = new Message("Choisissez un auteur!");
							dialErr.setVisible(true);		
				}
				
			}
		});
		contentPane.add(buttonRechercher);
		
		JButton buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.setBounds(175, 147, 89, 23);
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueConsultAuteur.this);
			}
		});
		contentPane.add(buttonAnnuler);
		
		JButton buttonQuitter = new JButton("Quitter");
		buttonQuitter.setBounds(175, 427, 89, 23);
		buttonQuitter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueConsultAuteur.this);
			}
		});
		contentPane.add(buttonQuitter);
	}
}
